package com.zhu.algorithm.sort;

import com.zhu.algorithm.sort.impl.Sort;

import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zhujiabao
 * @Date: 2021/12/23/16:29
 * @Description:冒泡排序
 *
 * 算法步骤
 * 比较相邻的元素。如果第一个比第二个大，就交换他们两个。
 *
 * 对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对。这步做完后，最后的元素会是最大的数。
 *
 * 针对所有的元素重复以上的步骤，除了最后一个。
 *
 * 持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
 */
public class bubbleSort implements Sort {

    @Override
    public int[] sort(int[] sourceArray){

        // 对 arr 进行拷贝，不改变参数内容
        int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
        long A=System.currentTimeMillis();

        for (int i=0; i<arr.length; i++)
            for (int j=0; j<arr.length-i-1; j++){
                if (arr[j]>arr[j+1]){
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }

        long B=System.currentTimeMillis();
        System.out.println("冒泡排序所耗时间： "+(B-A)+"ms");

        return arr;
    }

}
